iT邦幫忙

2023 iThome 鐵人賽

DAY 21
1
Software Development

Spring Boot 零基礎入門系列 第 21

Spring Boot 零基礎入門 (22) - RESTful API 實作 - @GetMapping、@PostMapping...

  • 分享至 

  • xImage
  •  

設計 RESTful API


了解了 RESTful API 的概念之後,接著我們也可以試著去設計出一套 RESTful API 出來,並且了解要如何透過 Spring Boot 程式,去實作這套 RESTful API。

舉例來說,我們可以先設計出一個 Student class,並且在裡面新增 id 和 name 兩個變數,用來表示這個學生的 id 和名字,程式如下:

public class Student {
    Integer id;
    String name;
}

接著,我們可以為 Student 這個資源,去設計出一連串的 RESTful API:

  • 像是我們需要一個「創建學生」的 API ,這樣子才能新增新同學的數據到資料庫
  • 我們也需要一個「查詢學生」的 API,這樣子才能去查詢某一筆學生的數據
  • ...等等

所以針對 Student 這個「資源」,通常我們會設計四個最基本的 RESTful API 給他,也就是 CRUD(Create 新增、Read 查詢、Update 修改、Delete 刪除),具體設計方式如下圖所示:

22-2.png

所以透過這四個 RESTful API,就可以完成 Student 的「新增、查詢、修改、刪除」的四個基本操作了!

補充:「Create 新增、Read 查詢、Update 修改、Delete 刪除」這四個操作,又可以簡稱為 CRUD,幾乎每一種資源(ex: 商品、訂單、會員...等),都會需要這四個操作,因此 CRUD 也可以說是大家剛入門 Spring Boot 時,最常撰寫的程式。

指定 Http method 的方式:@GetMapping、@PostMapping...等

當我們設計好 Student 資源的四個基本 RESTful API 之後,因此前端到時候想要去新增一筆 Student 數據時,前端就要使用 POST,去請求 /students 這個 url 路徑,這樣子才能夠創建一筆新的 Student 數據到資料庫中。

22-3.png

而在 Spring Boot 中,有兩種方式可以「限制」前端只能用某個 Http method 來請求 url 路徑,分別是:

@RequestMapping(value = "/students", method = RequestMethod.POST)

以及

@PostMapping("/students")

上面這兩種寫法,都可以限制前端只能使用 POST,去請求 /students 的 url 路徑,他們的差別就只是一行寫起來比較長、一行寫起來比較短而已。

在之前的文章中,我們都是使用上面的 @RequestMapping 的寫法來設計 url 路徑,而他的缺點,就是寫起來比較冗長,不利於後續維護。

因此一般在實作上,通常會改成使用下方的 @PostMapping 的寫法,直接透過 @PostMapping 這個註解,去「限制」前端只能使用 POST 來請求,這樣子的寫法會更簡潔、更一目瞭然,所以一般在設計 RESTful API 時,通常就是會採用下方的 @PostMapping 來實作!

在 Spring Boot 中,就提供了以下四個註解給我們使用:

  • @GetMapping:限制前端只能使用 GET 來請求該 url 路徑
  • @PostMapping:限制前端只能使用 POST 來請求該 url 路徑
  • @PutMapping:限制前端只能使用 PUT 來請求該 url 路徑
  • @DeleteMapping:限制前端只能使用 DELETE 來請求該 url 路徑

不過這些註解大家不需要死背,因為大家如果觀察一下的話,可以發現「這些註解都是以 Http method 當作開頭」來設計,像是 @GetMapping 就是 Get + Mapping,而 @PostMapping 則是 Post + Mapping。

所以當大家以後看到這些註解時,只要直接觀察註解的名稱(XXX + Mapping),就可以知道他想要限制的是哪一種請求方法了!


上一篇
Spring Boot 零基礎入門 (21) - RESTful API 介紹
下一篇
Spring Boot 零基礎入門 (23) - Http Status Code(Http 狀態碼)介紹
系列文
Spring Boot 零基礎入門29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
trytrycan13
iT邦新手 5 級 ‧ 2023-10-07 21:01:58

補充:如果沒有在 @ReqeustMapping 後面的小括號中,特別添加 method = RequestMethod.POST 的設定的話,那就是所有的 Http method 都接受,沒有特別限制

這邊的 @RequestMapping,有拼寫筆誤

古古 iT邦新手 2 級 ‧ 2023-10-07 21:07:41 檢舉

感謝提醒!已修正

也謝謝老師每日更新文章,受益良多!

我要留言

立即登入留言